ROLL 配置指南
ROLL 框架通过 YAML 配置文件来定义实验参数。本文档将详细介绍配置项的含义和使用方法。
Pipeline 配置
exp_name: "agentic_pipeline"
seed: 42
rpc_timeout: 3600
logging_dir: ./output/logs
output_dir: ./output
render_save_dir: /data/oss_bucket_0/yali/output/render
system_envs:
USE_MODELSCOPE: '1'
track_with: tensorboard
tracker_kwargs:
log_dir: /data/oss_bucket_0/yali/llm/tensorboard/roll_exp/agentic_sokoban
num_gpus_per_node: 8
max_steps: 1024
save_steps: 10000
logging_steps: 1
eval_steps: 10
resume_from_checkpoint: false
rollout_batch_size: 64
prompt_length: 2048
response_length: 4096
num_return_sequences_in_group: 8
基本信息与通用配置
exp_name: 当前实验的名称,用于标识和组织输出文件、日志等。默认是从 Python 文件名派生。seed: 用于初始化随机数生成器。设置固定的种子可以确保实验的可复现性。rpc_timeout: 远程过程调用(RPC)的超时时长,单位为秒。用于 Ray Actor 之间通信。如果一个调用在此时间内没有响应,则会抛出超时错误。output_dir: 模型预测结果和检查点(checkpoints)的输出目录。logging_dir: 存储日志文件的目录。track_with: 用于跟踪实验进度的工具类型。可选 wandb (Weights & Biases), tensorboard (TensorBoard), swanlab 或 stdout (标准输出)。tracker_kwargs: 传递给所选跟踪器类的额外关键字参数(字典)。例如,WandB 的 API 密钥、项目名称等。
训练/评估流程配置
max_steps: 训练的最大步数。如果大于 0,则设置流水线执行的总步数。训练将在达到此步数时停止。save_steps: 保存模型检查点的频率。每隔 X 个更新步数保存一次模型检查点。logging_steps: 记录训练指标的频率。每隔 X 个更新步数记录一次训练信息(例如损失、指标等)。eval_steps: 评估频率。每隔 X 个更新步数执行一次评估。resume_from_checkpoint: 是否从检查点恢复训练。如果设置为 True,则从 output_dir 中最近的检查点恢复。checkpoint_config: 检查点相关的配置信息,这个字段会被写入 worker_config。
批处理大小与序列长度配置
rollout_batch_size: 在每次推理批次中,要进行 Rollout 的样本数量。val_batch_size: 在每次验证批次中,要进行 Rollout 的样本数量。prompt_length: 提示(输入)的最大长度(以 token 为单位)。如果实际提示更短,会填充到此长度;如果更长,可能会被截断。response_length: LLM 生成的响应(输出)的最大长度(以 token 为单位)。如果 LLM 生成的响应更短,会填充;如果更长,会被截断。sequence_length: 要填充的最大序列长度(以 token 为单位)。这通常指 LLM 模型的总上下文窗口大小,包括提示和生成的响应。
分布式训练配置
local_rank: 分布式训练中的本地排名(在当前节点内的排名)。对于分布式训练,通常由系统自动设置;如果不是分布式训练,则设置为 -1。num_nodes: 可用于分布式训练的节点(物理服务器)数量。如果设置为 1,则表示在单个节点上进行分布式训练。num_gpus_per_node: 指定每个节点上可用的 GPU 数量。当节点数量大于 1 时,此参数应请求整个节点上的 GPU 总数。确保在多节点设置中 GPU 资源分配与请求一致。
调度与请求管理
generate_opt_level: 控制 LLM 生成(推理)的优化级别。设置为 0 时,使用基础批次生成接口;设置为 1 时,使用调度器处理请求。is_num_return_sequences_expand: 是否在提示(prompts)中复制 num_return_sequences 次。如果为 True,LLM 会为每个输入提示生成多个独立的响应,而不是只生成一个。max_running_requests: 在 LLM 推理服务器上可以同时处理的最大请求数量。这限制了并行推理的并发度。is_use_additional_prompts: 是否使用除常规批次大小之外的额外提示进行处理。max_additional_running_prompts: 在 batch_size 之外,可以额外运行的提示数量。这可能用于处理一些特殊或低优先级的请求,而不会阻塞主批次。
RLVR Pipeline 常用配置
num_return_sequences_in_group: 对于每个提示,LLM 要生成序列的数量。请注意,它的值会按比例扩大实际的训练全局批次样本量。换句话说,实际的训练全局批次大小等于num_return_sequences_in_group*rollout_batch_size。